<?php
/**
 * Created by PhpStorm.
 * Author: Sojo
 * Date: 2017/2/15
 * Time: 15:39
 */
/**
 * 异常定义以及使用规范说明
 */
// 用if判断确保只define一次，防止出现php语法警告
if (!defined('ERR_OK')) {
    /**
     * ---------------------------------------------------------------------------------------------------------
     * 系统内部错误定义（一旦定义不可以更改位置，只向后添加）
     * 错误码 0 - 99999
     * ---------------------------------------------------------------------------------------------------------
     */
    define('ERR_OK', 0);                    // 处理正常！以0进行表示。code = 0
    define('ERR_UNKNOWN', 99999);           // 未知错误，通常用在try catch或switch case拦截到不期望的错误发生进行转发错误的时候。
    define('ERR_FRAMEWORK', 10001);         // 框架错误，用于自定义框架中的代码出错
    define('ERR_ASSERT', 10002);            // 断言错误，通常是xAssert判断为假的时候抛出此错误。
    define('ERR_TODO', 10003);              // 未完成的开发功能被调用，应用使用了尚未开发完成的代码时候报错误。
    define('ERR_AUTH', 10004);              // oAuth用户认证失效，access_token失效
    define('ERR_EXPIRED', 10005);           // 登录已过期，此值禁止改变，客户端需要对此值解析做重新登录的跳转判断
    define('ERR_PARAMETER', 10006);         // 参数验证失败，对于函数形参校验错误或者控制器的验证器验证失败的定义。
    define('ERR_ROUTE', 10007);             // 路由配置错误
    define('ERR_PERMISSIONS', 10008);       // 权限错误
    define('ERR_INITIALIZE', 10009);        // 初始化错误
    define('ERR_REQUEST_INVALID', 10010);   // 请求失效

    /**
     * ---------------------------------------------------------------------------------------------------------
     * Framework Service 错误
     * 错误码 200000 - 299999
     * ---------------------------------------------------------------------------------------------------------
     */
    define('ERR_SERVICE_CONFIGURATION_FILE', 200000);               // 配置文件参数错误

    /**
     * SMS
     * 错误码 201000 - 201999
     */
    /** Alidayu，错误码 201000 - 201099 */
    define('ERR_SERVICE_SMS_ALIDAYU', 201001);                      // Alidayu错误
    /** 后续，错误码 201100 - 201199 */

    /**
     * OSS
     * 错误码 202000 - 202999
     */
    /** Aliyun，错误码 202000 - 202099 */
    define('ERR_SERVICE_OSS_ALIYUN', 202001);                       // Aliyun OSS错误

    /**
     * ---------------------------------------------------------------------------------------------------------
     * Logic 错误
     * 错误码 300000 - 399999
     * ---------------------------------------------------------------------------------------------------------
     */
    define('ERR_LOGIC', 300000);                                    // 逻辑错误
    define('ERR_LOGIC_DATA_ALREADY_EXISTS', 300001);                // 数据已存在
    define('ERR_LOGIC_NO_DATA_EXIST', 300002);                      // 数据不存在
    define('ERR_LOGIC_DATA_NEED_TO_UPDATE', 300003);                // 数据无需更新
    /**
     * ---------------------------------------------------------------------------------------------------------
     * Client 错误
     * 错误码 400000 - 999999
     * ---------------------------------------------------------------------------------------------------------
     */

    /** 验证码，错误码 401000 - 401999 */
    define('ERR_CLIENT_CAPTCHA', 400001);                           // 验证码错误

    /** 注册，错误码 402000 - 402999 */

    /** 登录，错误码 403000 - 403999 */
    define('ERR_CLIENT_LOGIN_INFO', 403001);                        // 登录信息错误
    define('ERR_CLIENT_LOGIN_FORBIDDEN', 403002);                   // 账户已被禁止登录
    define('ERR_CLIENT_LOGIN_NO_ROLE_USER', 403003);                // 账户无角色

    /**
     * 发送短信错误码
     */
    define('ERR_CLIENT_SMS_CODE_USED',410001);//验证码已经使用
    define('ERR_CLIENT_SMS_CODE_SEND_FAIL',410003);//验证码发送失败
    define('ERR_CLIENT_SEND_IS_LIMIT',410004);//两分钟内无法重复发送
    define('ERR_CLIENT_SEND_IS_FAIL',410005);//发送失败
    define('ERR_CLIENT_CODE_IS_DEADLINE',410006);//验证码已经过期
    define('ERR_CLIENT_CODE_IS_FAIL',410007);//验证码错误
    /**
     * 兑换模块错误码
     */
    define('ERR_CLIENT_VER_CODE_FAIL',420001);//验证码错误
    define('ERR_CLIENT_VER_CODE_DEADLINE',420002);//验证码过期
    define('ERR_CLIENT_EX_CODE_FAIL',420003);//卡号或卡密错误
    define('ERR_CLIENT_EX_CODE_USED',420004);//此兑换卡已经使用
    define('ERR_CLIENT_EX_DATA_FAIL',420005);//充值数据出错
    define('ERR_CLIENT_EX_DATA_UNKNOW',420006);//未知的充值类型
    define('ERR_CLIENT_EX_DATA_UNKNOWs',420007);//该兑换码无法兑换该产品
    define('ERR_CLIENT_GOODS_UNKNOWs',420008);//产品信息不存在
    define('ERR_CLIENT_GOODS_UNKNOWsa',420009);//token不匹配
    define('ERR_CLIENT_GOODS_UNKNOWsb',420010);//该兑换码商户或活动不匹配
    define('ERR_CLIENT_CODE_IS_NOT_EXIST',420011);//兑换码不存在
    define('ERR_CLIENT_ORDER_IS_NOT_EXIST',420012);//订单不存在
    define('ERR_CLIENT_ITEM_EXIST',420013);//商户或者活动不存在
    define('ERR_CLIENT_OPER_NOT_EXIST',420014);//不存在的发放人员
    define('ERR_CLIENT_MERCHANT_NOT_EXIST',420015);//商户不存在
    define('ERR_CLIENT_MERCHANT_DISABLED',420016);//商户被禁用
    define('ERR_CLIENT_OPENID_IS_VALID',420017);//openid失效
    define('ERR_CLIENT_CARD_IS_VALID',420018);//10分钟内无法重复发送卡密
    define('ERR_CLIENT_CARD_IS_END',420019);//兑换码已经用完
    define('ERR_CLIENT_SEND_TIME_IS_NOT_ENOUGH',420020);//当天发送次数不能超过5次
    define('ERR_CLIENT_ITEM_IS_NOT_EXIST',420021);//该商户无此活动
    define('ERR_CLIENT_ITEM_NOT_START',420022);//活动未开始
    define('ERR_CLIENT_ITEM_IS_END',420023);//活动已结束
    define('ERR_CLIENT_OPER_IS_NOT_CARD',420024);//改发放人员没有卡片可以发放
    define('ERR_CLIENT_OPER_IS_NOT_CARDs',420025);//此卡已经激活
    define('ERR_CLIENT_CARD_IS_LOCK',420026);//此卡已经激活
    define('ERR_CLIENT_CARD_TURN',420027);//支付订单下单成功
    define('ERR_CLIENT_ORDER_IS_CANT_ORDER',420028);//该订单无法支付
    define('ERR_CLIENT_OIL_ORDER_IS_LIMIT',420029);//油卡每天只能充值5笔
//    define('ERR_CLIENT_GOODS_UNKNOWsc',4200011);//

    /**
     * 充值模块
     */
    define('ERR_CLIENT_CHARGE_FAIL',430001);//充值出错

}

if (!function_exists("get_error_message")) {
    function get_error_message($error_code)
    {
        $list = [
            /**
             * ---------------------------------------------------------------------------------------------------------
             * System 错误
             * ---------------------------------------------------------------------------------------------------------
             */
            ERR_OK              => ['zh-CN' => "处理正常", 'en' => 'ok'],
            ERR_UNKNOWN         => ['zh-CN' => "未知错误", 'en' => 'unknown error'],
            ERR_FRAMEWORK       => ['zh-CN' => "框架错误", 'en' => 'framework error'],
            ERR_ASSERT          => ['zh-CN' => "断言错误", 'en' => 'assert error'],
            ERR_TODO            => ['zh-CN' => "暂未完成此功能的开发", 'en' => 'unfinished functions, please wait for development'],
            ERR_AUTH            => ['zh-CN' => "未授权的请求，请申请权限", 'en' => 'unauthorized request，please apply for permission'],
            ERR_EXPIRED         => ['zh-CN' => "登录已过期，请重新登录", 'en' => 'login has expired, please login again'],
            ERR_PARAMETER       => ['zh-CN' => "参数验证失败", 'en' => 'parameter validation fails'],
            ERR_ROUTE           => ['zh-CN' => "路由配置错误", 'en' => 'route configuration error'],
            ERR_PERMISSIONS     => ['zh-CN' => "权限错误", 'en' => 'permissions error'],
            ERR_INITIALIZE      => ['zh-CN' => "初始化错误", 'en' => 'initialize error'],
            ERR_REQUEST_INVALID => ['zh-CN' => "请求失效", 'en' => 'request invalid'],

            /**
             * ---------------------------------------------------------------------------------------------------------
             * Service 错误
             * ---------------------------------------------------------------------------------------------------------
             */
            ERR_SERVICE_CONFIGURATION_FILE => ['zh-CN' => "配置文件错误", 'en' => 'configuration file'],
            /** Alidayu */
            ERR_SERVICE_SMS_ALIDAYU        => ['zh-CN' => "阿里大于错误", 'en' => 'Alidayu error'],
            /** OSS */
            ERR_SERVICE_OSS_ALIYUN         => ['zh-CN' => "阿里云OSS错误", 'en' => 'Aliyun OSS error'],

            /**
             * ---------------------------------------------------------------------------------------------------------
             * Logic 错误
             * ---------------------------------------------------------------------------------------------------------
             */
            ERR_LOGIC                     => ['zh-CN' => "逻辑错误", 'en' => 'logic error'],
            ERR_LOGIC_DATA_ALREADY_EXISTS => ['zh-CN' => "数据已存在", 'en' => 'data already exists'],
            ERR_LOGIC_NO_DATA_EXIST       => ['zh-CN' => "数据不存在", 'en' => 'no data exist'],
            ERR_LOGIC_DATA_NEED_TO_UPDATE => ['zh-CN' => "数据无需更新", 'en' => 'data need to update'],

            /**
             * ---------------------------------------------------------------------------------------------------------
             * Client 错误
             * ---------------------------------------------------------------------------------------------------------
             */
            /** 验证码 */
            ERR_CLIENT_CAPTCHA             => ['zh-CN' => "验证码错误", 'en' => 'captcha error'],
            /** 注册 */

            /** 登录 */
            ERR_CLIENT_LOGIN_INFO         => ['zh-CN' => "登录信息错误", 'en' => 'login info error'],
            ERR_CLIENT_LOGIN_FORBIDDEN    => ['zh-CN' => "账户已被禁止登录", 'en' => 'login is forbidden'],
            ERR_CLIENT_LOGIN_NO_ROLE_USER => ['zh-CN' => "账户权限未设定", 'en' => 'login fail for no role user'],
            ERR_CLIENT_VER_CODE_FAIL=>['zh-CN'=>"验证码错误"],
            ERR_CLIENT_VER_CODE_DEADLINE=>['zh-CN'=>"验证码过期"],
            ERR_CLIENT_EX_CODE_FAIL=>['zh-CN'=>"卡号或卡密错误"],
            ERR_CLIENT_EX_CODE_USED=>['zh-CN'=>"此兑换卡已经使用"],
            ERR_CLIENT_EX_DATA_FAIL=>['zh-CN'=>"充值数据出错"],
            ERR_CLIENT_EX_DATA_UNKNOW=>['zh-CN'=>"未知的充值类型"],
            ERR_CLIENT_CHARGE_FAIL=>['zh-CN'=>"充值出错"],
            ERR_CLIENT_EX_DATA_UNKNOWs=>['zh-CN'=>"该兑换码无法兑换该产品"],
            ERR_CLIENT_GOODS_UNKNOWs=>['zh-CN'=>"产品信息不存在"],
            ERR_CLIENT_GOODS_UNKNOWsa=>['zh-CN'=>"token不匹配"],
            ERR_CLIENT_GOODS_UNKNOWsb=>['zh-CN'=>"该兑换码没有活动信息或者商户信息"],
            ERR_CLIENT_CODE_IS_NOT_EXIST=>['zh-CN'=>"兑换码不存在"],
            ERR_CLIENT_ORDER_IS_NOT_EXIST=>['zh-CN'=>"订单不存在"],
            ERR_CLIENT_ITEM_EXIST=>['zh-CN'=>"商户或者活动不存在"],
            ERR_CLIENT_SEND_IS_LIMIT=>['zh-CN'=>"两分钟内无法重复发送"],
            ERR_CLIENT_SEND_IS_FAIL=>['zh-CN'=>"发送失败"],
            ERR_CLIENT_CODE_IS_DEADLINE=>['zh-CN'=>"验证码已经过期"],
            ERR_CLIENT_CODE_IS_FAIL=>['zh-CN'=>"验证码错误"],
            ERR_CLIENT_OPER_NOT_EXIST=>['zh-CN'=>"不存在的发放人员"],
            ERR_CLIENT_SMS_CODE_USED=>['zh-CN'=>"验证码已经使用"],
            ERR_CLIENT_SMS_CODE_SEND_FAIL=>['zh-CN'=>"验证码发送失败"],
            ERR_CLIENT_MERCHANT_NOT_EXIST=>['zh-CN'=>"商户不存在"],
            ERR_CLIENT_MERCHANT_DISABLED=>['zh-CN'=>"商户被禁用"],
            ERR_CLIENT_OPENID_IS_VALID=>['zh-CN'=>"openid失效"],
            ERR_CLIENT_CARD_IS_VALID=>['zh-CN'=>"5分钟内无法重复发送卡密"],
            ERR_CLIENT_CARD_IS_END=>['zh-CN'=>"兑换码已经用完"],
            ERR_CLIENT_SEND_TIME_IS_NOT_ENOUGH=>['zh-CN'=>"发送次数不能超过5次"],
            ERR_CLIENT_ITEM_IS_NOT_EXIST=>['zh-CN'=>"该商户无此活动"],
            ERR_CLIENT_ITEM_NOT_START=>['zh-CN'=>"活动未开始"],
            ERR_CLIENT_ITEM_IS_END=>['zh-CN'=>"活动已结束"],
            ERR_CLIENT_OPER_IS_NOT_CARD=>['zh-CN'=>"改发放人员没有卡片可以发放"],
            ERR_CLIENT_OPER_IS_NOT_CARDs=>['zh-CN'=>"此卡未激活"],
            ERR_CLIENT_CARD_IS_LOCK=>['zh-CN'=>"该兑换码已锁定"],
            ERR_CLIENT_CARD_TURN=>['zh-CN'=>"支付订单下单成功"],
            ERR_CLIENT_ORDER_IS_CANT_ORDER=>['zh-CN'=>"该订单无法支付"],
            ERR_CLIENT_OIL_ORDER_IS_LIMIT=>['zh-CN'=>"每天油卡充值上限5次"],
        ];
        $language = "zh-CN";

        return isset($list[$error_code]) ? $list[$error_code][$language] : false;
    }
}